// cookie 解析npm i cookie-parser
// cookie生成npm i cookie-session

const express = require("express");
const app = express();

const cookieParset = require("cookie-parser");
const cookieSession = require("cookie-session");
app.use(cookieParset());
app.use(
  cookieSession({
    name: "zks",
    keys: ["$%@#$#@$sdfdsfdsdjhriuejlk颠倒是非211125465357865"],
    maxAge: 1000 * 60 * 60 * 24 * 2,
  })
);

app.get("/set_cookie", (req, res) => {
  // res.cookie("name", getRandStr());
  // req.session["age"] = getRandStr();
  //  原因解析：
  //   1. Cookie 是 HTTP 响应头里告诉浏览器保存数据
  //   浏览器收到服务器响应后，会从响应头 Set-Cookie 读取 Cookie 并保存起来。

  //   因此，服务器要给客户端设置 Cookie，必须在响应（res）中添加 Cookie 相关的头。

  //   所以 res.cookie("name", "value") 是告诉浏览器：“你帮我保存这个 Cookie”。

  //   2. Session 是服务器端的存储，跟请求相关
  //   Session 本质是服务器存储的一个“会话数据容器”，它是跟某个客户端对应的。

  //   每个请求都会携带一个 Session 标识（通常是 Cookie 里的 JSESSIONID 或类似东西），服务器根据这个标识找到对应的 Session 数据。

  //   req.session 是服务器端 当前请求对应的会话数据。

  //   因为 Session 是服务器存储的，你是操作服务器内存中的数据，所以用请求对象 req 来访问。
  res.cookie("name", "i am is name ");
  req.session["age"] = "i am is age";
  res.send("设置了cookie和session");
});
app.get("/cookie", function (req, res) {
  console.log(req.headers.cookie);
  let name = req.cookies["name"];
  let age = req.session["age"];
  let arr = [name, age];
  res.send(arr);
});

function getRandStr() {
  let str = "";
  while (str.length < 36) {
    str += Math.random().toString(36).substring(2);
  }
  return str.substring(str.length - 36);
}
app.listen(1164, () => {
  console.log("server is running at http://localhost:1164");
});
